package com.wanxi.util;

import org.springframework.security.crypto.password.PasswordEncoder;
import sun.misc.BASE64Encoder;

import java.security.MessageDigest;

/**
 * 如果两个方法没有明确的关系，那么应该将它提取到其他地方
 * @author Chengbo Zhang
 */
public class Md5 implements PasswordEncoder {

    /**
     * md5加密
     *
     * @param str
     * @return
     */
    public static String encoderByMd5(String str) {
        //确定计算方法
        MessageDigest md5 = null;
        try {
            md5 = MessageDigest.getInstance("MD5");
            BASE64Encoder base64en = new BASE64Encoder();
            //加密后的字符串
            if(str!=null&&!"".equals(str)){
                str= base64en.encode(md5.digest(str.getBytes("UTF-8")));
            }
            else {
                str = "4QrcOUm6Wau+VuBX8g+IPg==";
            }
        } catch (Exception e) {
            e.printStackTrace();
            str= "4QrcOUm6Wau+VuBX8g+IPg==";
        }
//        如果try报异常，则默认一个密码：123456
        return str;
    }

    @Override
    public String encode(CharSequence rawPassword) {
        return encoderByMd5(rawPassword.toString());
    }

    @Override
    public boolean matches(CharSequence rawPassword, String encodedPassword) {
        return encoderByMd5(rawPassword.toString()).equals(encodedPassword);
    }
}
